package cn.iocoder.yudao.module.famous.doctor.dal.mysql.forumRecord;

import java.util.*;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.famous.doctor.dal.dataobject.forumRecord.FamForumRecordDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.famous.doctor.controller.admin.forumRecord.vo.*;

import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;

/**
 * 点赞/收藏--记录表 Mapper
 *
 * @author 档案
 */
@Mapper
public interface FamForumRecordMapper extends BaseMapperX<FamForumRecordDO> {

    default PageResult<FamForumRecordDO> selectPage(FamForumRecordPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<FamForumRecordDO>()
                .betweenIfPresent(FamForumRecordDO::getCreateTime, reqVO.getCreateTime())
                .eqIfPresent(FamForumRecordDO::getForumId, reqVO.getForumId())
                .eqIfPresent(FamForumRecordDO::getThumbsupId, reqVO.getThumbsupId())
                .eqIfPresent(FamForumRecordDO::getLabel, reqVO.getLabel())
                .eqIfPresent(FamForumRecordDO::getState, reqVO.getState())
                .orderByDesc(FamForumRecordDO::getId));
    }

    default List<FamForumRecordDO> selectList(FamForumRecordExportReqVO reqVO) {
        return selectList(new LambdaQueryWrapperX<FamForumRecordDO>()
                .betweenIfPresent(FamForumRecordDO::getCreateTime, reqVO.getCreateTime())
                .eqIfPresent(FamForumRecordDO::getForumId, reqVO.getForumId())
                .eqIfPresent(FamForumRecordDO::getThumbsupId, reqVO.getThumbsupId())
                .eqIfPresent(FamForumRecordDO::getLabel, reqVO.getLabel())
                .eqIfPresent(FamForumRecordDO::getState, reqVO.getState())
                .orderByDesc(FamForumRecordDO::getId));
    }

    /**
     *
     * @param reqVO
     * @param b  true查询1条  false查询所有
     * @return
     */
    default List<FamForumRecordDO> selectList2(FamForumRecordExportReqVO reqVO,Boolean b) {
        LambdaQueryWrapperX<FamForumRecordDO> famForumRecordDOLambdaQueryWrapperX = new LambdaQueryWrapperX<FamForumRecordDO>()
                .eqIfPresent(FamForumRecordDO::getForumId, reqVO.getForumId())
                .eqIfPresent(FamForumRecordDO::getCreator, getLoginUserId())
                .eqIfPresent(FamForumRecordDO::getState, reqVO.getState())
                .orderByDesc(FamForumRecordDO::getId);
        if (reqVO.getThumbsupId()==null) {
            famForumRecordDOLambdaQueryWrapperX.isNull(FamForumRecordDO::getThumbsupId);
        }else {
            famForumRecordDOLambdaQueryWrapperX.eq(FamForumRecordDO::getThumbsupId, reqVO.getThumbsupId());
        }
        if (b==Boolean.TRUE) {
            famForumRecordDOLambdaQueryWrapperX.last("limit 1");
        }
        return selectList(famForumRecordDOLambdaQueryWrapperX);
    }

}
